package 二进制;

public class 交替位二进制数_693 {
//给定一个正整数，检查他是否为交替位二进制数：换句话说，就是他的二进制数相邻的两个位数永不相等。
//
// 示例 1:
//
//
//输入: 5
//输出: True
//解释:
//5的二进制数是: 101
	//
//
// 示例 2:
//
//
//输入: 7
//输出: False
//解释:
//7的二进制数是: 111
//
//
// 示例 3:
//
//
//输入: 11
//输出: False
//解释:
//11的二进制数是: 1011
//
//
// 示例 4:
//
//
//输入: 10
//输出: True
//解释:
//10的二进制数是: 1010
	
	//二进制数相邻的两个位数永不相等,判断一个数的位级表示是否不会出现连续的 0 和 1
	//思路:将n右移一位,在和原来的数进行异或,得到的结果为11111就为true,将1111和(其+1)进行&判断是否等于0
	 public boolean hasAlternatingBits(int n) {
	       int a = n ^ (n>>1);
	       return (a&(a+1)) ==0;
	 }
}
